//字符串压缩。利用字符重复出现的次数，编写一种方法，实现基本的字符串压缩功能。比如，字符串aabcccccaaa会变为a2b1c5a3。若“压缩”后的字符串没
//有变短，则返回原先的字符串。你可以假设字符串中只包含大小写英文字母（a至z）。 
//
// 示例 1： 
//
// 
//输入："aabcccccaaa"
//输出："a2b1c5a3"
// 
//
// 示例 2： 
//
// 
//输入："abbccd"
//输出："abbccd"
//解释："abbccd"压缩后为"a1b2c2d1"，比原字符串长度更长。
// 
//
// 提示： 
//
// 
// 字符串长度在 [0, 50000] 范围内。 
// 
//
// Related Topics 双指针 字符串 👍 191 👎 0


package LeetCode.editor.cn;


/**
 * @author ldltd
 * @date 2025-06-04 19:36:55
 * @description 面试题 01.06.字符串压缩
 
 */
 
public class CompressStringLcci {
    public static void main(String[] args) {
    //测试代码
    CompressStringLcci fun = new CompressStringLcci();
    Solution solution= fun.new Solution();
    solution.compressString("aabcccccaa");
    }

//leetcode submit region begin(Prohibit modification and deletion)
class Solution {
    public String compressString(String S) {
        if(S.length()==0) return S;
        StringBuilder sb=new StringBuilder();
        char ch=S.charAt(0);
        int count=1;
        char[] chars = S.toCharArray();
        for (int i = 1; i < chars.length; i++) {
            if(chars[i]!=ch){
                sb.append(ch);
                sb.append(count);
                ch= chars[i];
                count=1;
                continue;
            }
            count++;
        }
        sb.append(ch);
        sb.append(count);
        return sb.length()>=S.length()?S:sb.toString();
    }
}
//leetcode submit region end(Prohibit modification and deletion)

}
